<!-- // 宏任务和微任务:
//     - 异步代码有优先级关系,分为宏任务代码和微任务代码。微任务优先级高先执行，宏任务优先级低后执行。
//     - 宏任务是宿主发起的：包括整体代码script，setTimeout，setInterval等等
//     - 微任务是js自身发起的： Promise.then/catch/fanally，process.nextTick，queueMicrotask
//     - 浏览器事件轮询执行过程:
//       - 执行栈选择最先进入队列的宏任务（一般都是script），执行其同步代码直至结束
//       - 在执行同步代码的过程中,如果遇到宏任务,则把宏任务交给浏览器对应的管理模块(DOM管理模块,ajax管理模块,定时器管理模块)
//       进行管理,当宏任务的回调需要被执行的时候,会把回调函数放入回调队列(callBack queue)中等待执行
//       - 如果遇到微任务,则直接把微任务的回调放入微任务队列中等待执行
//       - 当同步代码执行完成,先清空微任务队列,然后去宏任务队列中执行宏任务,每执行完一个宏任务都会再去清空微任务队列 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        console.log(1);
const p1 = new Promise((resolve,reject)=>{
    console.log(2);
    setTimeout(()=>{
        console.log(3);
        resolve(4)
        console.log(5);
    },2000)
   
 

  

})
.then((value)=>{
    console.log(6);
})

console.log(7);
    </script>
</body>
</html>